package com.xiyuan.smartutils.enums;

/**
 * the description for class PayType
 *
 * @author xiyuan-lgz 2024-04-06 @version v1.0.0 新建与整理
 */
public enum PayType {
    
    /**
     * 账户余额
     */
    Account("Account", "账户余额"),
    
    /**
     * 微信
     */
    Winxin("Weixin", "微信"),
    
    /**
     * 支付宝
     */
    Alipay("ALIPAY", "支付宝"),
    
    /**
     * 银行卡
     */
    BankCard("BankCard", "银行卡"),
    
    /**
     * 银联卡，银联卡是 BankCard 的子集
     */
    UnionPay("UnionPay", "银联卡"),
    
    /**
     * 无需支付 （0 元购）
     */
    Free("Free", "免费送"),
    
    /**
     * 货到付款
     */
    CashOnDelivery("CashOnDelivery", "货到付款"),
    
    /**
     * 联线支付
     */
    Lianlianpay("LIANLIANPAY", "联线支付"),
    
    /**
     * QQ
     */
    QQ("QQ", "QQ"),
    
    /**
     * VISA 卡
     */
    Visa("Visa", "Visa"),
    
    /**
     * MasterCard
     */
    MasterCard("MasterCard", "MasterCard"),
    
    /**
     * 借记卡
     */
    DebitCard("DebitCard", "借记卡"),
    /**
     * 预付卡
     */
    PrepaidCard("PrepaidCard", "预付卡"),
    
    /**
     * 订阅卡
     */
    SubscriptionCard("SubscriptionCard", "订阅卡"),
    
    /**
     * PayPal
     */
    PayPal("PayPal", "PayPal"),
    
    /**
     * 支付卡 （如果不知道卡片类型 则选择此项项或者BankCard）
     */
    PaymentCard("PaymentCard", "PaymentCard"),
    
    ;
    
    private final String code;
    private final String desc;
    
    PayType(String code, String desc) {
        this.desc = desc;
        this.code = code;
    }
    
    public String getCode() {
        return code;
    }
    
    public String getDesc() {
        return desc;
    }
    
    public static PayType of(String code) {
        for (int i = 0; i < PayType.values().length; i++) {
            PayType value = PayType.values()[i];
            if (value.code.equalsIgnoreCase(code)) {
                return value;
            }
        }
        
        return null;
    }
}
